package com.qiusuo0226.platform.property;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @author qiusuo
 * @date 2024/3/20 17:25
 */
@Data
@Component
@ConfigurationProperties(prefix = "xxl.job")
public class XxlJobProperty {


    private Admin admin;

    /**
     * 执行器通讯Token [选填] : 非空时即启用，和调度器配置的accessToken保持一致
     */
    private String accessToken;

    private Executor executor;

    /**
     * todo xxl-job 调度器配置映射类
     */
    @Data
    public static class Admin {
        /**
         * 设置调度器的地址，如果调度中心集群部署存在多个地址用逗号分隔，执行器会使用该地址进行“执行器心跳注册”和“任务结果回调”，为空则关闭自动注册
         */
        private String address;
    }

    /**
     * todo xxl-job 执行器配置映射类
     */
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Executor {
        /**
         * 执行器名称 [选填] : 执行器心跳注册分组依据；为空则关闭自动注册，可以直接用项目名称代替
         */
        private String appname;

        /**
         * 执行器注册 [选填] : 优先使用该地址作为注册地址，为空时使用内嵌服务“IP:PORT”作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口
         */
        private String address;
        /**
         * 执行器IP [选填] : 默认为空自动获取IP，多网卡可手动指定IP，该IP不会绑定Host仅作为通讯时用
         */
        private String ip;

        /**
         * 执行器端口 [选填] : 小于0则自动获取，默认端口为9999，单机部署多个执行器时，注意要配置不同执行器端口
         */
        private int port;

        /**
         * 执行器日志文件存储路径 [选填] : 需要对该路径拥有读写权限，为空则使用默认路径
         */
        private String logPath;

        /**
         * 执行器日志文件保存天数 [选填] : 过期日志自动清理，限制值大于等于3时生效，如-1，关闭自动清理功能
         */
        private int logRetentionDays;
    }

}
